<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>keyinfo: XML Security Library Reference Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="XML Security Library Reference Manual">
<link rel="up" href="xmlsec-ref.html" title="XML Security Core Library API Reference.">
<link rel="prev" href="xmlsec-io.html" title="io">
<link rel="next" href="xmlsec-keysdata.html" title="keysdata">
<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
<style type="text/css">
table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
    width: 20em;
}
.synopsis, .classsynopsis {
    background: #eeeeee;
    border: solid 1px #aaaaaa;
}
.programlisting {
    background: #eeeeee;
    border: solid 1px #000000;
}
.navigation {
    background: #eeeeee;
    border: solid 1px #000000;
}
.navigation a {
    color: initial;
}
.navigation a:visited {
    color: initial;
}
</style>
<style type="text/css">
table.CALSTABLE > tbody > tr:nth-child(1) > td:nth-child(1) {
    width: 20em;
}
.synopsis, .classsynopsis {
    background: #eeeeee;
    border: solid 1px #aaaaaa;
}
.programlisting {
    background: #eeeeee;
    border: solid 1px #000000;
}
.navigation {
    background: #eeeeee;
    border: solid 1px #000000;
}
.navigation a {
    color: initial;
}
.navigation a:visited {
    color: initial;
}
</style>
</head>
<body><table width="100%" valign="top"><tr valign="top">
<td valign="top" align="left" width="210">
<img src="../images/logo.gif" alt="XML Security Library" border="0"><p></p>
<ul>
<li><a href="../index.html">Home</a></li>
<li><a href="../download.html">Download</a></li>
<li><a href="../news.html">News</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul>
<li><a href="../faq.html">FAQ</a></li>
<li><a href="../api/xmlsec-notes.html">Tutorial</a></li>
<li><a href="../api/xmlsec-reference.html">API reference</a></li>
<li><a href="../api/xmlsec-examples.html">Examples</a></li>
</ul>
<li><a href="../xmldsig.html">XML Digital Signature</a></li>
<ul><li><a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">Online Verifier</a></li></ul>
<li><a href="../xmlenc.html">XML Encryption</a></li>
<li><a href="../c14n.html">XML Canonicalization</a></li>
<li><a href="../bugs.html">Reporting Bugs</a></li>
<li><a href="http://www.aleksey.com/pipermail/xmlsec">Mailing list</a></li>
<li><a href="../related.html">Related</a></li>
<li><a href="../authors.html">Authors</a></li>
</ul>
<table width="100%">
<tr>
<td width="15"></td>
<td><a href="http://xmlsoft.org/"><img src="../images/libxml2-logo.png" alt="LibXML2" border="0"></a></td>
</tr>
<tr>
<td width="15"></td>
<td><a href="http://xmlsoft.org/XSLT"><img src="../images/libxslt-logo.png" alt="LibXSLT" border="0"></a></td>
</tr>
<tr>
<td width="15"></td>
<td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
</tr>
<!--Links - start--><!--Links - end-->
</table>
</td>
<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
                  <a href="#xmlsec-keyinfo.description" class="shortcut">Description</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="xmlsec-io.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="xmlsec-keysdata.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="xmlsec-keyinfo"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="xmlsec-keyinfo.top_of_page"></a>keyinfo</span></h2>
<p>keyinfo &#8212; <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node parser functions.</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
<a name="xmlsec-keyinfo.stability-level"></a><h2>Stability Level</h2>
<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
</div>
<div class="refsect1">
<a name="xmlsec-keyinfo.functions"></a><h2>Functions</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col>
<col>
</colgroup>
<tbody>
<tr>
<td class="function_type">
<font><span class="returnvalue">int</span></font>
</td>
<td class="function_name">
<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoNodeRead" title="xmlSecKeyInfoNodeRead ()">xmlSecKeyInfoNodeRead</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<font><span class="returnvalue">int</span></font>
</td>
<td class="function_name">
<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoNodeWrite" title="xmlSecKeyInfoNodeWrite ()">xmlSecKeyInfoNodeWrite</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="returnvalue">xmlSecKeyInfoCtxPtr</span></a>
</td>
<td class="function_name">
<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxCreate" title="xmlSecKeyInfoCtxCreate ()">xmlSecKeyInfoCtxCreate</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<font><span class="returnvalue">void</span></font>
</td>
<td class="function_name">
<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxDestroy" title="xmlSecKeyInfoCtxDestroy ()">xmlSecKeyInfoCtxDestroy</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<font><span class="returnvalue">int</span></font>
</td>
<td class="function_name">
<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxInitialize" title="xmlSecKeyInfoCtxInitialize ()">xmlSecKeyInfoCtxInitialize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<font><span class="returnvalue">void</span></font>
</td>
<td class="function_name">
<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxFinalize" title="xmlSecKeyInfoCtxFinalize ()">xmlSecKeyInfoCtxFinalize</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<font><span class="returnvalue">void</span></font>
</td>
<td class="function_name">
<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxReset" title="xmlSecKeyInfoCtxReset ()">xmlSecKeyInfoCtxReset</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<font><span class="returnvalue">int</span></font>
</td>
<td class="function_name">
<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxCopyUserPref" title="xmlSecKeyInfoCtxCopyUserPref ()">xmlSecKeyInfoCtxCopyUserPref</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<font><span class="returnvalue">int</span></font>
</td>
<td class="function_name">
<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxCreateEncCtx" title="xmlSecKeyInfoCtxCreateEncCtx ()">xmlSecKeyInfoCtxCreateEncCtx</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<font><span class="returnvalue">void</span></font>
</td>
<td class="function_name">
<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxDebugDump" title="xmlSecKeyInfoCtxDebugDump ()">xmlSecKeyInfoCtxDebugDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<font><span class="returnvalue">void</span></font>
</td>
<td class="function_name">
<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxDebugXmlDump" title="xmlSecKeyInfoCtxDebugXmlDump ()">xmlSecKeyInfoCtxDebugXmlDump</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<font><span class="returnvalue">xmlSecKeyDataId</span></font>
</td>
<td class="function_name">
<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyDataNameGetKlass" title="xmlSecKeyDataNameGetKlass ()">xmlSecKeyDataNameGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<font><span class="returnvalue">xmlSecKeyDataId</span></font>
</td>
<td class="function_name">
<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyDataValueGetKlass" title="xmlSecKeyDataValueGetKlass ()">xmlSecKeyDataValueGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<font><span class="returnvalue">xmlSecKeyDataId</span></font>
</td>
<td class="function_name">
<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyDataRetrievalMethodGetKlass" title="xmlSecKeyDataRetrievalMethodGetKlass ()">xmlSecKeyDataRetrievalMethodGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<font><span class="returnvalue">xmlSecKeyDataId</span></font>
</td>
<td class="function_name">
<a class="link" href="xmlsec-keyinfo.html#xmlSecKeyDataEncryptedKeyGetKlass" title="xmlSecKeyDataEncryptedKeyGetKlass ()">xmlSecKeyDataEncryptedKeyGetKlass</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
<a name="xmlsec-keyinfo.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col>
<col>
</colgroup>
<tbody>
<tr>
<td class="datatype_keyword">enum</td>
<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoMode" title="enum xmlSecKeyInfoMode">xmlSecKeyInfoMode</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-DONT-STOP-ON-KEY-FOUND:CAPS" title="XMLSEC_KEYINFO_FLAGS_DONT_STOP_ON_KEY_FOUND">XMLSEC_KEYINFO_FLAGS_DONT_STOP_ON_KEY_FOUND</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-STOP-ON-UNKNOWN-CHILD:CAPS" title="XMLSEC_KEYINFO_FLAGS_STOP_ON_UNKNOWN_CHILD">XMLSEC_KEYINFO_FLAGS_STOP_ON_UNKNOWN_CHILD</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-KEYNAME-STOP-ON-UNKNOWN:CAPS" title="XMLSEC_KEYINFO_FLAGS_KEYNAME_STOP_ON_UNKNOWN">XMLSEC_KEYINFO_FLAGS_KEYNAME_STOP_ON_UNKNOWN</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-KEYVALUE-STOP-ON-UNKNOWN-CHILD:CAPS" title="XMLSEC_KEYINFO_FLAGS_KEYVALUE_STOP_ON_UNKNOWN_CHILD">XMLSEC_KEYINFO_FLAGS_KEYVALUE_STOP_ON_UNKNOWN_CHILD</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-RETRMETHOD-STOP-ON-UNKNOWN-HREF:CAPS" title="XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_UNKNOWN_HREF">XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_UNKNOWN_HREF</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-RETRMETHOD-STOP-ON-MISMATCH-HREF:CAPS" title="XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_MISMATCH_HREF">XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_MISMATCH_HREF</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-X509DATA-STOP-ON-UNKNOWN-CHILD:CAPS" title="XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CHILD">XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CHILD</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-X509DATA-DONT-VERIFY-CERTS:CAPS" title="XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS">XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-X509DATA-STOP-ON-UNKNOWN-CERT:CAPS" title="XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT">XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-X509DATA-STOP-ON-INVALID-CERT:CAPS" title="XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_INVALID_CERT">XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_INVALID_CERT</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-ENCKEY-DONT-STOP-ON-FAILED-DECRYPTION:CAPS" title="XMLSEC_KEYINFO_FLAGS_ENCKEY_DONT_STOP_ON_FAILED_DECRYPTION">XMLSEC_KEYINFO_FLAGS_ENCKEY_DONT_STOP_ON_FAILED_DECRYPTION</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-STOP-ON-EMPTY-NODE:CAPS" title="XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE">XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#XMLSEC-KEYINFO-FLAGS-X509DATA-SKIP-STRICT-CHECKS:CAPS" title="XMLSEC_KEYINFO_FLAGS_X509DATA_SKIP_STRICT_CHECKS">XMLSEC_KEYINFO_FLAGS_X509DATA_SKIP_STRICT_CHECKS</a></td>
</tr>
<tr>
<td class="datatype_keyword">struct</td>
<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx">xmlSecKeyInfoCtx</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyDataNameId" title="xmlSecKeyDataNameId">xmlSecKeyDataNameId</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyDataValueId" title="xmlSecKeyDataValueId">xmlSecKeyDataValueId</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyDataRetrievalMethodId" title="xmlSecKeyDataRetrievalMethodId">xmlSecKeyDataRetrievalMethodId</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyDataEncryptedKeyId" title="xmlSecKeyDataEncryptedKeyId">xmlSecKeyDataEncryptedKeyId</a></td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
<a name="xmlsec-keyinfo.description"></a><h2>Description</h2>
<p><a class="ulink" href="https://www.w3.org/TR/xmldsig-core/#sec-KeyInfo" target="_top">KeyInfo</a> is an 
optional element that enables the recipient(s) to obtain
the key needed to validate the signature.  KeyInfo may contain keys,
names, certificates and other public key management information, such as
in-band key distribution or key agreement data.</p>
<p>Schema Definition:</p>
<div class="informalexample"><pre class="programlisting">
 &lt;element name="KeyInfo" type="ds:KeyInfoType"/&gt;
 &lt;complexType name="KeyInfoType" mixed="true"&gt;
   &lt;choice maxOccurs="unbounded"&gt;
      &lt;element ref="ds:KeyName"/&gt;
      &lt;element ref="ds:KeyValue"/&gt;
      &lt;element ref="ds:RetrievalMethod"/&gt;
      &lt;element ref="ds:X509Data"/&gt;
      &lt;element ref="ds:PGPData"/&gt;
      &lt;element ref="ds:SPKIData"/&gt;
      &lt;element ref="ds:MgmtData"/&gt;
      &lt;any processContents="lax" namespace="##other"/&gt;
      &lt;!-- (1,1) elements from (0,unbounded) namespaces --&gt;
   &lt;/choice&gt;
   &lt;attribute name="Id" type="ID" use="optional"/&gt;
 &lt;/complexType&gt;
</pre></div>
<p></p>
<p>DTD:</p>
<div class="informalexample"><pre class="programlisting">
&lt;!ELEMENT KeyInfo (#PCDATA|KeyName|KeyValue|RetrievalMethod|
                   X509Data|PGPData|SPKIData|MgmtData %KeyInfo.ANY;)* &gt;
&lt;!ATTLIST KeyInfo  Id  ID   #IMPLIED &gt;
</pre></div>
<p></p>
</div>
<div class="refsect1">
<a name="xmlsec-keyinfo.functions_details"></a><h2>Functions</h2>
<div class="refsect2">
<a name="xmlSecKeyInfoNodeRead"></a><h3>xmlSecKeyInfoNodeRead ()</h3>
<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecKeyInfoNodeRead (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> keyInfoNode</code></em>,
                       <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
                       <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
<p>Parses the <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element <em class="parameter"><code>keyInfoNode</code></em>
, extracts the key data
and stores into <em class="parameter"><code>key</code></em>
.</p>
<div class="refsect3">
<a name="xmlSecKeyInfoNodeRead.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col>
<col>
<col>
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>keyInfoNode</p></td>
<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>key</p></td>
<td class="parameter_description"><p>the pointer to result key object.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>keyInfoCtx</p></td>
<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="xmlSecKeyInfoNodeRead.returns"></a><h4>Returns</h4>
<p> 0 on success or -1 if an error occurs.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="xmlSecKeyInfoNodeWrite"></a><h3>xmlSecKeyInfoNodeWrite ()</h3>
<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecKeyInfoNodeWrite (<em class="parameter"><code><font><span class="type">xmlNodePtr</span></font> keyInfoNode</code></em>,
                        <em class="parameter"><code><a class="link" href="xmlsec-keys.html#xmlSecKey" title="struct xmlSecKey"><span class="type">xmlSecKeyPtr</span></a> key</code></em>,
                        <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
<p>Writes the <em class="parameter"><code>key</code></em>
 into the <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element template <em class="parameter"><code>keyInfoNode</code></em>
.</p>
<div class="refsect3">
<a name="xmlSecKeyInfoNodeWrite.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col>
<col>
<col>
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>keyInfoNode</p></td>
<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> node.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>key</p></td>
<td class="parameter_description"><p>the pointer to key object.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>keyInfoCtx</p></td>
<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="xmlSecKeyInfoNodeWrite.returns"></a><h4>Returns</h4>
<p> 0 on success or -1 if an error occurs.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="xmlSecKeyInfoCtxCreate"></a><h3>xmlSecKeyInfoCtxCreate ()</h3>
<pre class="programlisting"><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="returnvalue">xmlSecKeyInfoCtxPtr</span></a>
xmlSecKeyInfoCtxCreate (<em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> keysMngr</code></em>);</pre>
<p>Allocates and initializes <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.
Caller is responsible for freeing it by calling <a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxDestroy" title="xmlSecKeyInfoCtxDestroy ()"><span class="type">xmlSecKeyInfoCtxDestroy</span></a>
function.</p>
<div class="refsect3">
<a name="xmlSecKeyInfoCtxCreate.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col>
<col>
<col>
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>keysMngr</p></td>
<td class="parameter_description"><p>the pointer to keys manager (may be NULL).</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="xmlSecKeyInfoCtxCreate.returns"></a><h4>Returns</h4>
<p> pointer to newly allocated object or NULL if an error occurs.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="xmlSecKeyInfoCtxDestroy"></a><h3>xmlSecKeyInfoCtxDestroy ()</h3>
<pre class="programlisting"><font><span class="returnvalue">void</span></font>
xmlSecKeyInfoCtxDestroy (<em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
<p>Destroys <em class="parameter"><code>keyInfoCtx</code></em>
 object created with <a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxCreate" title="xmlSecKeyInfoCtxCreate ()"><span class="type">xmlSecKeyInfoCtxCreate</span></a> function.</p>
<div class="refsect3">
<a name="xmlSecKeyInfoCtxDestroy.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col>
<col>
<col>
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>keyInfoCtx</p></td>
<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="xmlSecKeyInfoCtxInitialize"></a><h3>xmlSecKeyInfoCtxInitialize ()</h3>
<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecKeyInfoCtxInitialize (<em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>,
                            <em class="parameter"><code><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> keysMngr</code></em>);</pre>
<p>Initializes <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context. Caller is
responsible for cleaning it up by <a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxFinalize" title="xmlSecKeyInfoCtxFinalize ()"><span class="type">xmlSecKeyInfoCtxFinalize</span></a> function.</p>
<div class="refsect3">
<a name="xmlSecKeyInfoCtxInitialize.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col>
<col>
<col>
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>keyInfoCtx</p></td>
<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>keysMngr</p></td>
<td class="parameter_description"><p>the pointer to keys manager (may be NULL).</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="xmlSecKeyInfoCtxInitialize.returns"></a><h4>Returns</h4>
<p> 0 on success and a negative value if an error occurs.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="xmlSecKeyInfoCtxFinalize"></a><h3>xmlSecKeyInfoCtxFinalize ()</h3>
<pre class="programlisting"><font><span class="returnvalue">void</span></font>
xmlSecKeyInfoCtxFinalize (<em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
<p>Cleans up the <em class="parameter"><code>keyInfoCtx</code></em>
 initialized with <a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtxInitialize" title="xmlSecKeyInfoCtxInitialize ()"><span class="type">xmlSecKeyInfoCtxInitialize</span></a>
function.</p>
<div class="refsect3">
<a name="xmlSecKeyInfoCtxFinalize.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col>
<col>
<col>
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>keyInfoCtx</p></td>
<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="xmlSecKeyInfoCtxReset"></a><h3>xmlSecKeyInfoCtxReset ()</h3>
<pre class="programlisting"><font><span class="returnvalue">void</span></font>
xmlSecKeyInfoCtxReset (<em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
<p>Resets the <em class="parameter"><code>keyInfoCtx</code></em>
 state. User settings are not changed.</p>
<div class="refsect3">
<a name="xmlSecKeyInfoCtxReset.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col>
<col>
<col>
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>keyInfoCtx</p></td>
<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="xmlSecKeyInfoCtxCopyUserPref"></a><h3>xmlSecKeyInfoCtxCopyUserPref ()</h3>
<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecKeyInfoCtxCopyUserPref (<em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> dst</code></em>,
                              <em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> src</code></em>);</pre>
<p>Copies user preferences from <em class="parameter"><code>src</code></em>
 context to <em class="parameter"><code>dst</code></em>
 context.</p>
<div class="refsect3">
<a name="xmlSecKeyInfoCtxCopyUserPref.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col>
<col>
<col>
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>dst</p></td>
<td class="parameter_description"><p>the pointer to destination context object.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>src</p></td>
<td class="parameter_description"><p>the pointer to source context object.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="xmlSecKeyInfoCtxCopyUserPref.returns"></a><h4>Returns</h4>
<p> 0 on success and a negative value if an error occurs.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="xmlSecKeyInfoCtxCreateEncCtx"></a><h3>xmlSecKeyInfoCtxCreateEncCtx ()</h3>
<pre class="programlisting"><font><span class="returnvalue">int</span></font>
xmlSecKeyInfoCtxCreateEncCtx (<em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>);</pre>
<p>Creates encryption context form processing <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey/&gt;</a> child
of <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element.</p>
<div class="refsect3">
<a name="xmlSecKeyInfoCtxCreateEncCtx.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col>
<col>
<col>
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>keyInfoCtx</p></td>
<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="xmlSecKeyInfoCtxCreateEncCtx.returns"></a><h4>Returns</h4>
<p> 0 on success and a negative value if an error occurs.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="xmlSecKeyInfoCtxDebugDump"></a><h3>xmlSecKeyInfoCtxDebugDump ()</h3>
<pre class="programlisting"><font><span class="returnvalue">void</span></font>
xmlSecKeyInfoCtxDebugDump (<em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>,
                           <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
<p>Prints user settings and current context state to <em class="parameter"><code>output</code></em>
.</p>
<div class="refsect3">
<a name="xmlSecKeyInfoCtxDebugDump.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col>
<col>
<col>
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>keyInfoCtx</p></td>
<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>output</p></td>
<td class="parameter_description"><p>the output file pointer.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="xmlSecKeyInfoCtxDebugXmlDump"></a><h3>xmlSecKeyInfoCtxDebugXmlDump ()</h3>
<pre class="programlisting"><font><span class="returnvalue">void</span></font>
xmlSecKeyInfoCtxDebugXmlDump (<em class="parameter"><code><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoCtx" title="struct xmlSecKeyInfoCtx"><span class="type">xmlSecKeyInfoCtxPtr</span></a> keyInfoCtx</code></em>,
                              <em class="parameter"><code><font><span class="type">FILE</span></font> *output</code></em>);</pre>
<p>Prints user settings and current context state in XML format to <em class="parameter"><code>output</code></em>
.</p>
<div class="refsect3">
<a name="xmlSecKeyInfoCtxDebugXmlDump.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col>
<col>
<col>
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>keyInfoCtx</p></td>
<td class="parameter_description"><p>the pointer to <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo/&gt;</a> element processing context.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>output</p></td>
<td class="parameter_description"><p>the output file pointer.</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="xmlSecKeyDataNameGetKlass"></a><h3>xmlSecKeyDataNameGetKlass ()</h3>
<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
xmlSecKeyDataNameGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The <a class="ulink" href="" target="_top">&lt;dsig:KeyName/&gt;</a> element key data klass
(http://www.w3.org/TR/xmldsig-core/<font><span class="type">sec-KeyName</span></font>):</p>
<p>The KeyName element contains a string value (in which white space is
significant) which may be used by the signer to communicate a key
identifier to the recipient. Typically, KeyName contains an identifier
related to the key pair used to sign the message, but it may contain
other protocol-related information that indirectly identifies a key pair.
(Common uses of KeyName include simple string names for keys, a key index,
a distinguished name (DN), an email address, etc.)</p>
<div class="refsect3">
<a name="xmlSecKeyDataNameGetKlass.returns"></a><h4>Returns</h4>
<p> the <a class="ulink" href="" target="_top">&lt;dsig:KeyName/&gt;</a> element processing key data klass.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="xmlSecKeyDataValueGetKlass"></a><h3>xmlSecKeyDataValueGetKlass ()</h3>
<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
xmlSecKeyDataValueGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The <a class="ulink" href="" target="_top">&lt;dsig:KeyValue/&gt;</a> element key data klass
(http://www.w3.org/TR/xmldsig-core/<font><span class="type">sec-KeyValue</span></font>):</p>
<p>The KeyValue element contains a single public key that may be useful in
validating the signature.</p>
<div class="refsect3">
<a name="xmlSecKeyDataValueGetKlass.returns"></a><h4>Returns</h4>
<p> the <a class="ulink" href="" target="_top">&lt;dsig:KeyValue/&gt;</a> element processing key data klass.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="xmlSecKeyDataRetrievalMethodGetKlass"></a><h3>xmlSecKeyDataRetrievalMethodGetKlass ()</h3>
<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
xmlSecKeyDataRetrievalMethodGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The <a class="ulink" href="" target="_top">&lt;dsig:RetrievalMethod/&gt;</a> element key data klass
(http://www.w3.org/TR/xmldsig-core/<font><span class="type">sec-RetrievalMethod</span></font>):
A RetrievalMethod element within KeyInfo is used to convey a reference to
KeyInfo information that is stored at another location. For example,
several signatures in a document might use a key verified by an X.509v3
certificate chain appearing once in the document or remotely outside the
document; each signature's KeyInfo can reference this chain using a single
RetrievalMethod element instead of including the entire chain with a
sequence of X509Certificate elements.</p>
<p>RetrievalMethod uses the same syntax and dereferencing behavior as
Reference's URI and The Reference Processing Model.</p>
<div class="refsect3">
<a name="xmlSecKeyDataRetrievalMethodGetKlass.returns"></a><h4>Returns</h4>
<p> the <a class="ulink" href="" target="_top">&lt;dsig:RetrievalMethod/&gt;</a> element processing key data klass.</p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="xmlSecKeyDataEncryptedKeyGetKlass"></a><h3>xmlSecKeyDataEncryptedKeyGetKlass ()</h3>
<pre class="programlisting"><font><span class="returnvalue">xmlSecKeyDataId</span></font>
xmlSecKeyDataEncryptedKeyGetKlass (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey/&gt;</a> element key data klass
(http://www.w3.org/TR/xmlenc-core/<font><span class="type">sec-EncryptedKey</span></font>):</p>
<p>The EncryptedKey element is used to transport encryption keys from
the originator to a known recipient(s). It may be used as a stand-alone
XML document, be placed within an application document, or appear inside
an EncryptedData element as a child of a ds:KeyInfo element. The key value
is always encrypted to the recipient(s). When EncryptedKey is decrypted the
resulting octets are made available to the EncryptionMethod algorithm
without any additional processing.</p>
<div class="refsect3">
<a name="xmlSecKeyDataEncryptedKeyGetKlass.returns"></a><h4>Returns</h4>
<p> the <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey/&gt;</a> element processing key data klass.</p>
</div>
</div>
</div>
<div class="refsect1">
<a name="xmlsec-keyinfo.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="xmlSecKeyInfoMode"></a><h3>enum xmlSecKeyInfoMode</h3>
<p>The <em class="parameter"><code>xmlSecKeyInfoCtx</code></em>
 operation mode (read or write).</p>
<div class="refsect3">
<a name="xmlSecKeyInfoMode.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col>
<col>
<col>
</colgroup>
<tbody>
<tr>
<td class="enum_member_name"><p><a name="xmlSecKeyInfoModeRead"></a>xmlSecKeyInfoModeRead</p></td>
<td class="enum_member_description"><p>read <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo /&gt;</a> element.</p></td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="xmlSecKeyInfoModeWrite"></a>xmlSecKeyInfoModeWrite</p></td>
<td class="enum_member_description"><p>write <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo /&gt;</a> element.</p></td>
<td class="enum_member_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-DONT-STOP-ON-KEY-FOUND:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_DONT_STOP_ON_KEY_FOUND</h3>
<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_DONT_STOP_ON_KEY_FOUND             0x00000001
</pre>
<p>If flag is set then we will continue reading <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo /&gt;</a>
element even when key is already found.</p>
</div>
<hr>
<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-STOP-ON-UNKNOWN-CHILD:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_STOP_ON_UNKNOWN_CHILD</h3>
<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_STOP_ON_UNKNOWN_CHILD              0x00000002
</pre>
<p>If flag is set then we abort if an unknown <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo /&gt;</a>
child is found.</p>
</div>
<hr>
<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-KEYNAME-STOP-ON-UNKNOWN:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_KEYNAME_STOP_ON_UNKNOWN</h3>
<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_KEYNAME_STOP_ON_UNKNOWN            0x00000004
</pre>
<p>If flags is set then we abort if an unknown key name
(content of <a class="ulink" href="" target="_top">&lt;dsig:KeyName /&gt;</a> element) is found.</p>
</div>
<hr>
<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-KEYVALUE-STOP-ON-UNKNOWN-CHILD:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_KEYVALUE_STOP_ON_UNKNOWN_CHILD</h3>
<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_KEYVALUE_STOP_ON_UNKNOWN_CHILD     0x00000008
</pre>
<p>If flags is set then we abort if an unknown <a class="ulink" href="" target="_top">&lt;dsig:KeyValue /&gt;</a>
child is found.</p>
</div>
<hr>
<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-RETRMETHOD-STOP-ON-UNKNOWN-HREF:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_UNKNOWN_HREF</h3>
<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_UNKNOWN_HREF    0x00000010
</pre>
<p>If flag is set then we abort if an unknown href attribute
of <a class="ulink" href="" target="_top">&lt;dsig:RetrievalMethod /&gt;</a> element is found.</p>
</div>
<hr>
<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-RETRMETHOD-STOP-ON-MISMATCH-HREF:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_MISMATCH_HREF</h3>
<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_RETRMETHOD_STOP_ON_MISMATCH_HREF   0x00000020
</pre>
<p>If flag is set then we abort if an href attribute <a class="ulink" href="" target="_top">&lt;dsig:RetrievalMethod /&gt;</a>
element does not match the real key data type.</p>
</div>
<hr>
<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-X509DATA-STOP-ON-UNKNOWN-CHILD:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CHILD</h3>
<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CHILD     0x00000100
</pre>
<p>If flags is set then we abort if an unknown <a class="ulink" href="" target="_top">&lt;dsig:X509Data /&gt;</a>
child is found.</p>
</div>
<hr>
<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-X509DATA-DONT-VERIFY-CERTS:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS</h3>
<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS         0x00000200
</pre>
<p>If flag is set then we'll load certificates from <a class="ulink" href="" target="_top">&lt;dsig:X509Data /&gt;</a>
element without verification.</p>
</div>
<hr>
<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-X509DATA-STOP-ON-UNKNOWN-CERT:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT</h3>
<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_UNKNOWN_CERT      0x00000400
</pre>
<p>If flag is set then we'll stop when we could not resolve reference
to certificate from <a class="ulink" href="" target="_top">&lt;dsig:X509IssuerSerial /&gt;</a>, <a class="ulink" href="" target="_top">&lt;dsig:X509SKI /&gt;</a> or</p>
<a class="ulink" href="" target="_top">&lt;dsig:X509SubjectName /&gt;</a> elements.
</div>
<hr>
<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-X509DATA-STOP-ON-INVALID-CERT:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_INVALID_CERT</h3>
<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_INVALID_CERT      0x00000800
</pre>
<p>If the flag is set then we'll stop when <a class="ulink" href="" target="_top">&lt;dsig:X509Data /&gt;</a> element
processing does not return a verified certificate.</p>
</div>
<hr>
<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-ENCKEY-DONT-STOP-ON-FAILED-DECRYPTION:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_ENCKEY_DONT_STOP_ON_FAILED_DECRYPTION</h3>
<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_ENCKEY_DONT_STOP_ON_FAILED_DECRYPTION 0x00001000
</pre>
<p>If the flag is set then we'll stop when <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey /&gt;</a> element
processing fails.</p>
</div>
<hr>
<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-STOP-ON-EMPTY-NODE:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE</h3>
<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_STOP_ON_EMPTY_NODE                 0x00002000
</pre>
<p>If the flag is set then we'll stop when we found an empty node.
Otherwise we just ignore it.</p>
</div>
<hr>
<div class="refsect2">
<a name="XMLSEC-KEYINFO-FLAGS-X509DATA-SKIP-STRICT-CHECKS:CAPS"></a><h3>XMLSEC_KEYINFO_FLAGS_X509DATA_SKIP_STRICT_CHECKS</h3>
<pre class="programlisting">#define XMLSEC_KEYINFO_FLAGS_X509DATA_SKIP_STRICT_CHECKS        0x00004000
</pre>
<p>If the flag is set then we'll skip strict checking of certs and CRLs</p>
</div>
<hr>
<div class="refsect2">
<a name="xmlSecKeyInfoCtx"></a><h3>struct xmlSecKeyInfoCtx</h3>
<pre class="programlisting">struct xmlSecKeyInfoCtx {
    void*                               userData;
    unsigned int                        flags;
    unsigned int                        flags2;
    xmlSecKeysMngrPtr                   keysMngr;
    xmlSecKeyInfoMode                   mode;
    xmlSecPtrList                       enabledKeyData;
    int                                 base64LineSize;

    /* RetrievalMethod */
    xmlSecTransformCtx                  retrievalMethodCtx;
    int                                 maxRetrievalMethodLevel;


    /* EncryptedKey */
    xmlSecEncCtxPtr                     encCtx;
    int                                 maxEncryptedKeyLevel;



    /* x509 certificates */
    time_t                              certsVerificationTime;
    int                                 certsVerificationDepth;


    /* PGP */
    void*                               pgpReserved;    /* TODO */

    /* internal data */
    int                                 curRetrievalMethodLevel;
    int                                 curEncryptedKeyLevel;
    xmlSecKeyReq                        keyReq;

    /* for the future */
    void*                               reserved0;
    void*                               reserved1;
};
</pre>
<p>The <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo /&gt;</a> reading or writing context.</p>
<div class="refsect3">
<a name="xmlSecKeyInfoCtx.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col>
<col>
<col>
</colgroup>
<tbody>
<tr>
<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecKeyInfoCtx.userData"></a>userData</code></em>;</p></td>
<td class="struct_member_description"><p>the pointer to user data (xmlsec and xmlsec-crypto
never touch this).</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p>unsigned <font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.flags"></a>flags</code></em>;</p></td>
<td class="struct_member_description"><p>the bit mask for flags that control processin.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p>unsigned <font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.flags2"></a>flags2</code></em>;</p></td>
<td class="struct_member_description"><p>reserved for future.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><a class="link" href="xmlsec-keysmngr.html#xmlSecKeysMngr" title="struct xmlSecKeysMngr"><span class="type">xmlSecKeysMngrPtr</span></a> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.keysMngr"></a>keysMngr</code></em>;</p></td>
<td class="struct_member_description"><p>the pointer to current keys manager.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><a class="link" href="xmlsec-keyinfo.html#xmlSecKeyInfoMode" title="enum xmlSecKeyInfoMode"><span class="type">xmlSecKeyInfoMode</span></a> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.mode"></a>mode</code></em>;</p></td>
<td class="struct_member_description"><p>do we read or write <a class="ulink" href="" target="_top">&lt;dsig:KeyInfo /&gt;</a> element.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><a class="link" href="xmlsec-list.html#xmlSecPtrList" title="struct xmlSecPtrList"><span class="type">xmlSecPtrList</span></a> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.enabledKeyData"></a>enabledKeyData</code></em>;</p></td>
<td class="struct_member_description"><p>the list of enabled <em class="parameter"><code>xmlSecKeyDataId</code></em>
(if list is
empty then all data ids are enabled).</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.base64LineSize"></a>base64LineSize</code></em>;</p></td>
<td class="struct_member_description"><p>the max columns size for base64 encoding.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><a class="link" href="xmlsec-transforms.html#xmlSecTransformCtx" title="struct xmlSecTransformCtx"><span class="type">xmlSecTransformCtx</span></a> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.retrievalMethodCtx"></a>retrievalMethodCtx</code></em>;</p></td>
<td class="struct_member_description"><p>the transforms context for <a class="ulink" href="" target="_top">&lt;dsig:RetrievalMethod /&gt;</a>
element processing.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.maxRetrievalMethodLevel"></a>maxRetrievalMethodLevel</code></em>;</p></td>
<td class="struct_member_description">
<p>the max recursion level when processing</p>
<a class="ulink" href="" target="_top">&lt;dsig:RetrievalMethod /&gt;</a> element; default level is 1
(see also <em class="parameter"><code>curRetrievalMethodLevel</code></em>).</td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><a class="link" href="xmlsec-xmlenc.html#xmlSecEncCtx" title="struct xmlSecEncCtx"><span class="type">xmlSecEncCtxPtr</span></a> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.encCtx"></a>encCtx</code></em>;</p></td>
<td class="struct_member_description"><p>the encryption context for <a class="ulink" href="" target="_top">&lt;dsig:EncryptedKey /&gt;</a> element
processing.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.maxEncryptedKeyLevel"></a>maxEncryptedKeyLevel</code></em>;</p></td>
<td class="struct_member_description">
<p>the max recursion level when processing</p>
<a class="ulink" href="" target="_top">&lt;enc:EncryptedKey /&gt;</a> element; default level is 1
(see <em class="parameter"><code>curEncryptedKeyLevel</code></em>).</td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><font><span class="type">time_t</span></font> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.certsVerificationTime"></a>certsVerificationTime</code></em>;</p></td>
<td class="struct_member_description"><p>the time to use for X509 certificates verification
("not valid before" and "not valid after" checks);
if <em class="parameter"><code>certsVerificationTime</code></em>
is equal to 0 (default)
then we verify certificates against the system's
clock "now".</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.certsVerificationDepth"></a>certsVerificationDepth</code></em>;</p></td>
<td class="struct_member_description"><p>the max certifications chain length (default is 9).</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecKeyInfoCtx.pgpReserved"></a>pgpReserved</code></em>;</p></td>
<td class="struct_member_description"><p>reserved for PGP.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.curRetrievalMethodLevel"></a>curRetrievalMethodLevel</code></em>;</p></td>
<td class="struct_member_description"><p>the current <a class="ulink" href="" target="_top">&lt;dsig:RetrievalMethod /&gt;</a> element
processing level (see <em class="parameter"><code>maxRetrievalMethodLevel</code></em>
).</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><font><span class="type">int</span></font> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.curEncryptedKeyLevel"></a>curEncryptedKeyLevel</code></em>;</p></td>
<td class="struct_member_description"><p>the current <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey /&gt;</a> element
processing level (see <em class="parameter"><code>maxEncryptedKeyLevel</code></em>
).</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><a class="link" href="xmlsec-keys.html#xmlSecKeyReq" title="struct xmlSecKeyReq"><span class="type">xmlSecKeyReq</span></a> <em class="structfield"><code><a name="xmlSecKeyInfoCtx.keyReq"></a>keyReq</code></em>;</p></td>
<td class="struct_member_description"><p>the current key requirements.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecKeyInfoCtx.reserved0"></a>reserved0</code></em>;</p></td>
<td class="struct_member_description"><p>reserved for the future.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
<tr>
<td class="struct_member_name"><p><font><span class="type">void</span></font> *<em class="structfield"><code><a name="xmlSecKeyInfoCtx.reserved1"></a>reserved1</code></em>;</p></td>
<td class="struct_member_description"><p>reserved for the future.</p></td>
<td class="struct_member_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="xmlSecKeyDataNameId"></a><h3>xmlSecKeyDataNameId</h3>
<pre class="programlisting">#define xmlSecKeyDataNameId             xmlSecKeyDataNameGetKlass()
</pre>
<p>The <a class="ulink" href="" target="_top">&lt;dsig:KeyName/&gt;</a> processing class.</p>
</div>
<hr>
<div class="refsect2">
<a name="xmlSecKeyDataValueId"></a><h3>xmlSecKeyDataValueId</h3>
<pre class="programlisting">#define xmlSecKeyDataValueId            xmlSecKeyDataValueGetKlass()
</pre>
<p>The <a class="ulink" href="" target="_top">&lt;dsig:KeyValue/&gt;</a> processing class.</p>
</div>
<hr>
<div class="refsect2">
<a name="xmlSecKeyDataRetrievalMethodId"></a><h3>xmlSecKeyDataRetrievalMethodId</h3>
<pre class="programlisting">#define xmlSecKeyDataRetrievalMethodId  xmlSecKeyDataRetrievalMethodGetKlass()
</pre>
<p>The <a class="ulink" href="" target="_top">&lt;dsig:RetrievalMethod/&gt;</a> processing class.</p>
</div>
<hr>
<div class="refsect2">
<a name="xmlSecKeyDataEncryptedKeyId"></a><h3>xmlSecKeyDataEncryptedKeyId</h3>
<pre class="programlisting">#define xmlSecKeyDataEncryptedKeyId     xmlSecKeyDataEncryptedKeyGetKlass()
</pre>
<p>The <a class="ulink" href="" target="_top">&lt;enc:EncryptedKey/&gt;</a> processing class.</p>
</div>
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.27</div>
</td></tr></table></td>
</tr></table></body>
</html>
